
using UnityEngine;

public class AIPawn : MonoBehaviour
{
    [SerializeField]

    private float m_Speed = 5; // 速度

    private Vector3? m_Destination; //目的地坐标，?表示可以为空

    public Vector3? Destination => m_Destination; //只读属性，返回目的地坐标P

    // void Start()
    // {
    //     SetDestination(new Vector3(4.5f, 0, 0));  // 设置初始目的地坐标
    // }

    void Update()
    {
        if (m_Destination.HasValue)
        {
            var dir = m_Destination.Value - transform.position; // 目标位置相对角色位置的方向
            transform.position += dir.normalized * Time.deltaTime * m_Speed; // 方向归一化，乘以速度和时间，得到移动距离，归一化可以避免速度过快，速度向量越大越快

            var distanceToDestination = Vector3.Distance(transform.position, m_Destination.Value); // 计算角色与目标位置的距离

            if (distanceToDestination < 0.1f)
            {
                m_Destination = null; // 如果距离小于0.1，则认为到达目的地，将目的地设置为空
            }
        }
    }

    public void SetDestination(Vector3 destination)
    {
        m_Destination = destination;  //设置目的地坐标
    }
}